perm filename DFTP.MRC[UP,DOC] blob sn#322016 filedate 1977-12-07 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00035 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00005 00002	                 Computer Corporation of America
C00008 00003	     Groups of files may be moved with one command by using a '*'
C00011 00004	     Nearly as fundamental as storing  and  retrieving  files  is
C00013 00005	     The DELETE command, taking  as  its  argument  a  file  name
C00016 00006	               Introduction to Additional Commands
C00019 00007	     All the commands in the  preceding  section  operate  within
C00021 00008	     One may see one's existing subdirectories, when connected to
C00023 00009	                            Overview
C00026 00010	                          The Directory
C00029 00011	                        Referencing Nodes
C00031 00012	     The attach context is set, automatically at the beginning of
C00033 00013	     Contexts need not be  explicitly  given  by  the  user  when
C00035 00014	     For example:
C00038 00015	                        Referencing Files
C00040 00016	     Note that the user never specifies a <FILES> node explicitly
C00043 00017	                          Command Input
C00045 00018	     The connect context is   the   default   context   for   all
C00047 00019	                     Node-Oriented Commands
C00049 00020	     The LIST command lists  Datacomputer  nodes  (sites,  users,
C00050 00021	                     File-Oriented Commands
C00053 00022	     The  EXAMINE  command  lists  on  the  user's  terminal  the
C00055 00023	     The GET and PUT commands retrieve and store local disk files
C00057 00024	     The RENUMBER command changes a file's version number.  It is
C00059 00025	                     Miscellaneous Commands
C00060 00026	                            Responses
C00062 00027	                     Site Dependent Features
C00064 00028	                         Access Control
C00067 00029	                       Privileged Commands
C00071 00030	               Examples Using Privileged Commands
C00077 00031	                         Command Summary
C00079 00032	                 Site Dependent Command Summary
C00080 00033	                   Privileged Command Summary
C00082 00034	                          Summary Notes
C00085 00035	                              Paths
C00089 ENDMK
CāŠ—;
                 Computer Corporation of America
                      Technical Bulletin 1
                        DFTP User's Guide
                            May 1977
                           W. R. Bush

                          Introduction



     DFTP is a user-invoked file archiving program that, via  the
Arpanet,  stores and retrieves local files on the Datacomputer, a
dedicated data management system.  This Introduction is  intended
to  provide  information sufficient for basic use of the program.
A general description of it and information on its more  esoteric
features can be found in the DFTP User's Guide.

     DFTP command processing is similar  to  that  in  TENEX  and
TOPS-20.   Both <control-A> and <rubout> delete a character, both
<control-U>  and  <control-X>  delete  a  line,  and  <control-R>
retypes  a line.  A <space> or <escape> can be used to complete a
command (for example, typing DI<space> is  equivalent  to  typing
DIRECTORY).

     Since DFTP's primary function is file storage and retrieval,
the  most  fundamental commands are those that store and retrieve
files -- PUT and GET.  Both take as an argument the name  of  the
file  of  interest  (in  the  standard format of name followed by
optional extension), so that
          PUT MAIL.TXT
causes the local file MAIL.TXT to be shipped over the network  to
the Datacomputer, and
          GET MAIL.TXT retrieves it.
     Groups of files may be moved with one command by using a '*'
in  either or both the name and extension parts of the file name.
Thus
          PUT MAIL.*
stores all files with the name MAIL, and
          GET *.TXT
retrieves all files with the extension TXT.

     Files  may  be  given  different  names  when   stored   and
retrieved.   This  is  accomplished  by  inputting  a  <space> or
<escape> after the first file name, so that
          PUT MAIL.TXT<space>MAIL.15-APRIL-1977
stores the local file MAIL.TXT as MAIL.15-APRIL-1977, and
          GET MAIL.15-APRIL-1977<space>MAIL.OLD
retrieves the stored file MAIL.15-APRIL-1977 as  the  local  file
MAIL.OLD.
     Different versions of the same file can be stored, with  the
Datacomputer assigning higher numbers to more recent files.  Thus
storing  one  day's  messages  as MAIL.TXT, and later storing the
next day's messages as MAIL.TXT  results  in  two  files  on  the
Datacomputer,   MAIL.TXT;1   (the   messages  stored  first)  and
MAIL.TXT;2 (the messages  stored  later).   Version  numbers  are
denoted  as in TENEX, with the number following the file name and
separated from it by a ';'.   Version  numbers  may  be  used  in
retrieving files, so that
          GET MAIL.TXT;1
retrieves the first version of the file.  If no version number is
given,  DFTP  uses the largest as the default.  A '*' may be used
in the version number field, so that
          GET MAIL.TXT;*
retrieves all versions.
     Nearly as fundamental as storing  and  retrieving  files  is
finding  out  what  files have been stored -- what files exist on
the Datacomputer.  The DIRECTORY command performs this  function,
taking  as  its  argument a file name similar to that accepted by
PUT and GET.  Thus
          DIRECTORY *.TXT
lists all stored files with the extension TXT.  Note that
          DIRECTORY <space>
(DFTP echoes the <space> as '*.*;*') causes all stored  files  to
be  listed.  The command takes as a subargument the specification
of the amount of information desired about the listed  files.   A
<space>,  equivalent  to  TERSE, lists files and their sizes. The
VERBOSE  option  additionally  lists  the  date  the   file   was
originally   created   and   the   date  it  was  stored  on  the
Datacomputer.

     Another important  facility  is  the  ability  to  eliminate
unwanted  files on the Datacomputer.  This is done via the DELETE
and EXPUNGE commands.
     The DELETE command, taking  as  its  argument  a  file  name
similar  to that accepted by PUT and GET, marks files as deleted,
but does not permanently remove them.  Deleted status is  only  a
conditional  state.   Deleted  files may be listed by the DELETED
option of the DIRECTORY command, and a file's deleted status  may
be rescinded by the UNDELETE command.  The UNDELETE command takes
as its argument a file name similar to DELETE.  Thus
          DELETE MAIL.*
marks all files with the name MAIL as deleted, and
          UNDELETE MAIL.15-APRIL-1977
rescinds the deleted status of the file MAIL.15-APRIL-1977.  Note
that, for files of which there are multiple versions, the default
for  DELETE  is  the  (undeleted)  file with the smallest version
number, and for UNDELETE is the (deleted) file with  the  largest
version number.

     The EXPUNGE  command  permanently  removes  all  files  then
marked  as deleted, recovering the space used by those files.  It
takes no arguments (as far as this  Introduction  is  concerned),
and is invoked by typing
          EXPUNGE <space><space>
(DFTP echoes the first <space> as '<').

     The QUIT command causes a graceful exit from DFTP.
               Introduction to Additional Commands

     The commands described  in  the  followings  paragraphs  are
useful,  but  are  not  necessary for ordinary use of DFTP.  They
introduce  complexities  discussed  in  the  User's  Guide.   The
information and explanations in this section are of limited scope
in an attempt to keep the complexity at a minimum.

     The commands discussed here are  motivated  by  one  general
concern  --  the desire to divide a user's file space into parts.
DFTP allows such separation via user-specified  named  groupings,
called  subdirectories.  For example, one typically divides files
into classes by type,  such  as  MESSAGES,  SOURCES,  and  GAMES.
Subdirectories may be thought of as containing files and as being
under  --  subordinate  to -- the user's Datacomputer identity --
the user's name.  For example, the user HACKER at CCA has, on the
datacomputer, under the  user  name  HACKER,  the  subdirectories
MESSAGES,  SOURCES,  and  GAMES.   One  need  not  have  separate
subdirectories -- all one's files may be  stored  directly  under
one's  user  name.   Alternatively,  some  files  may  be  stored
directly  under  one's   user   name   and   some   in   separate
subdirectories,   or   all   files  may  be  stored  in  separate
subdirectories.
     All the commands in the  preceding  section  operate  within
only  one subdirectory at a time.  The CONNECT command is used to
choose which subdirectory is of interest.  Once a subdirectory is
chosen, all PUT's, GET's, DIRECTORY's, DELETE's, UNDELETE's,  and
EXPUNGE's  operate  within  that  subdirectory  until  another is
chosen.  Thus
          CONNECT MESSAGES
selects the MESSAGES  subdirectory.   CONNECT  also  creates  new
subdirectories.  If in the above example, MESSAGES did not exist,
DFTP  would  inform  the user of that fact with the comment '[New
Node]', and would ask for confirmation to proceed  and  make  the
new subdirectory.

     The files stored directly under one's user  name  are  in  a
special  subdirectory.   At  the  beginning  of  a  session  this
subdirectory is the default  subdirectory  that  all  PUT's  etc.
operate in (making possible use of DFTP by people who are unaware
of  subdirectories).   If  one  has  explicitly CONNECTed to some
other subdirectory and wishes to  go  back  and  reference  files
directly under one's user name,
          CONNECT <space>
(DFTP  echoes  the  <space>  as  '<<')  will  perform the desired
function.
     One may see one's existing subdirectories, when connected to
the initial default subdirectory, via the LIST  command,  in  the
form
          LIST <space>
(DFTP  echoes  the  <space>  as  '**').  LIST takes a subargument
similar to DIRECTORY.  A <space>,  equivalent  to  TERSE,  simply
lists  the  subdirectories,  while  VERBOSE  lists  all available
information about them, including megabits allocated  (MX-U)  and
used  (CHRG).   The  symbol  <FILES>  indicates  that  some files
actually exist in the associated subdirectory.

     One  may  delete  subdirectories  and  their   files,   when
connected  to  the  initial  default subdirectory, via the REMOVE
command.  The subdirectory name given the command as its argument
should be terminated in a <space>.  Thus
          REMOVE MESSAGES<space>
(DFTP echoes the <space> as '>**')  eliminates  the  subdirectory
MESSAGES and all files in it.
                            Overview


     The Datacomputer is a shared large-scale data  base  utility

offering  data  storage  and  data  management  services to other

computers on the Arpanet.  The system is a  centralized  facility

for archiving data, for sharing data among various network hosts,

and  for  providing inexpensive on-line storage for sites needing

to  supplement  their  local  capability.   The  Datacomputer  is

implemented  on  dedicated  hardware  and  comprises  a  separate

computing system specialized for data management.  The system can

be viewed logically as a closed box shared by  multiple  external

processors   and   accessed   in   a   standard  notation  called

Datalanguage.

     The Datacomputer File Transfer  Program  (DFTP)  provides  a

convenient  method  for storing and retrieving local files on the

Datacomputer  via  the  Arpanet.   DFTP  translates  simple  user

commands  into  Datalanguage,  sends the Datalanguage and data to

the Datacomputer, processes the messages and data  returned  from

the Datacomputer, and notifies the user of the results.
                          The Directory


     The DFTP Datacomputer directory is a tree, with  site  nodes

beneath  a  common  root node, user nodes beneath site nodes, and

optional subdirectories of arbitrary depth  and  breadth  beneath

user  nodes.   Files  are  stored  in  special  leaf nodes called

<FILES> nodes.  Pictorially,

                       <ROOT>
                       /    \
                   SITE      SITE    ...
                  /    \
              USER      USER    ...
             /    \
       <FILES>     SUBDIRECTORY    ...
                  /            \
            <FILES>             SUBDIRECTORY    ...
                                            \
                                            <FILES>    ...

The <FILES> nodes are the repositories of  all  data.   To  avoid

ambiguity,  there can be only one <FILES> node directly under any

given user or subdirectory node.

     There  are  two  basic  types  of  commands  --  those  that

reference  only  nodes  and  those  that reference files within a

<FILES> node.  Node level commands are used for manipulating  the

global  directory  structure of sites, users, and subdirectories.

A node level command takes a node path (described below)  as  its

argument.   File level commands are used for storing, retrieving,

and modifying files within a <FILES> node.  A file level  command

takes  as  its  argument  a file name (described below) or a node

path followed by a file name, called a file path (for referencing

files under nodes other than the defaults used by DFTP).
                        Referencing Nodes


     The mechanism for referencing a node, called a node path, is

a means of specifying a path  through  the  directory  tree.   It

consists of a context and a node list.

     Contexts  provide  convenient  anchoring  points  for   node

references.   The  three  contexts  are top, attach, and connect,

indicated by '<<<', '<<', and '<' respectively.

     The top context provides an absolute starting point for node

references.  It anchors a reference to the highest fixed star  in

the  directory  firmament  --  the  <ROOT>  node.  One may always

reference any node in the directory by indicating the top context

and  then  listing  all  the   nodes   (the   site,   user,   and

subdirectories) between the <ROOT> node and the node of interest.

The  context  also  allows  reference to nodes higher in the tree

(sites and users) than the other contexts.
     The attach context is set, automatically at the beginning of

a session by DFTP, to be the user's user node.   Thus  references

to  subdirectories, if prefaced with the attach context, need not

include the site and user (as compared  with  the  top  context).

The  context  can  be  changed  by the ATTACH command, usually to

another user.  The attach context provides a fixed point above  a

user's  subdirectories  for manipulating and choosing among them.

     The connect context is set, automatically at  the  beginning

of  a  session by DFTP, to be the same as the attach context.  It

is conceptually similar to the attach context in being a  movable

point  in  the  directory,  but  it is usually lower in the tree,

usually a  subdirectory.   It  can  be  changed  by  the  CONNECT

command,  usually  to  another  subdirectory.   It is usually the

point from which files are referenced.
     Contexts need not be  explicitly  given  by  the  user  when

specifying  a  node  path.   For the default contexts provided by

DFTP see the Command Input section.  Note also that a context can

be a complete node  reference.   A  node  may  be  referenced  by

specifying  only  a context (without a node list) if that context

has been previously set to that node.  For  example,  one's  user

node may be referenced via the attach context.

     A node  list  consists  of  a   sequence   of   node   names

(consecutive  levels  in the tree) separated by '>'s.  A password

may be necessary in acquiring access privileges at  a  particular

node,  in  which  case  the  node name is followed by ':' and the

password.  Sets of nodes can be referenced  --  all  nodes  at  a

particular level are indicated by '*', and all inferior nodes are

designated  by  '**' (which can occur only at the end of the node

list).
     For example:

          <<<CCA>HACKER:DINKUP>WALDO

Starting at  the  top  context,  the  node  path  references  the

subdirectory  WALDO  under  user  HACKER  at  site  CCA (with the

password DINKUP supplied to gain access to HACKER).

          <<WALDO>**

Starting at the attach context,  the  node  path  references  the

subdirectory  WALDO  and  all inferior nodes.  Note that WALDO is

included -- the REMOVE command, for  example,  would  delete  the

node WALDO as well as its inferiors.
                        Referencing Files



     File names have the same form as TENEX file names:  a  name,

an  optional extension, and an optional version number.  The name

is separated from the extension by a period,  and  the  extension

from  the  version  number  by  a  semicolon.   File  sets may be

indicated by an asterisk in any or all of the fields.

     Version numbers allow unambiguous reference  of  files  that

have  the  same  name  and  extension.   DFTP assigns each file a

version number which is unrelated to its TENEX or TOPS-20 version

number.  Later  versions  of  a  file  with  the  same  name  and

extension  receive  higher version numbers.  If the user does not

explicitly supply a version number  in  referencing  an  existing

file, DFTP provides a default.

     All  commands  that  accept  a  file  name  as   input   can

alternatively  accept  a file path, which consists of a node path

followed by a file name.  The two parts  are  separated  by  '>',

unless  the node path is only a context, in which case the '>' is

omitted.
     Note that the user never specifies a <FILES> node explicitly

in referencing a file.  If a file path is given, DFTP expands the

reference to refer to the given file in the  <FILES>  node  under

the  given  node.  If only a file name is given, DFTP expands the

reference to refer to the given file in the  <FILES>  node  under

the default context node.

     For example:

          MAIL.TXT

The  file  name  references the file MAIL.TXT in the <FILES> node

under the connect context.

          <*.SAV;*

The file name references all  versions  of  all  files  with  the

extension SAV in the <FILES> node under the connect context.

          <<MACROS>COMMON>SYSMAC.MAC

Starting at the attach context (presumably a user node), the file

path references the file SYSMAC.MAC in the <FILES> node under the

COMMON subdirectory of the MACROS subdirectory.
                          Command Input


     DFTP command input is similar to  TENEX  and  TOPS-20,  with

command  recognition  and  a  combination  of  TENEX  and TOPS-20

editing controls.  In particular,

          <control-A> and <rubout> delete a character,

          <control-R> retypes a line,

          <control-U> and <control-X> delete a line,

          <escape> and <space> are separators, and

          <carriage return>, <line feed>

                    and <end of line> are terminators.

     Node-oriented commands take node paths as  their  arguments.

File-oriented  commands  take  file  names or file paths as their

arguments.
     The connect context is   the   default   context   for   all

commands except ATTACH, the default for which is the top context,

and  BIG and CONNECT, which have as their defaults the the attach

context.

     Many commands have  default  arguments  and  trailers  which

are invoked  by  giving  a  space  or  escape  as the argument or

argument terminator.   The  default  argument  is  '<<'  for  the

CONNECT  command,  '<'  for  EXPUNGE,   and  '**'  for  LIST  and

REMOVE,  which  is also the default trailer.  For DIRECTORY, GET,

PUT, DELETE, UNDELETE, and EXAMINE   the   default  argument  and

trailer  (after  a  '>')  is  '*.*;*'.   The  default  option for

DIRECTORY and LIST is TERSE.
                     Node-Oriented Commands


     The ATTACH command sets  the  attach  context  (and  connect

context) and initiates Datacomputer accounting functions.

     The BIG command is used for indicating that  a  subdirectory

is  to be a large one.  It creates the subdirectory node given as

its argument if the node does not already  exist,  creates  under

that  node  an  expanded  <FILES>  node  (twice  the  size of the

standard one, with the names of the  files  inverted  for  faster

retrieval),  and  sets the user's connect context to be the given

subdirectory node.

     The CONNECT command sets the connect  context  (and  creates

new subdirectories).

     The EXPUNGE command removes files marked as deleted from the

<FILES>  node  under  the node given as the command argument.  If

the <FILES> node contains no files (deleted or undeleted)  it  is

removed from the Datacomputer directory.
     The LIST command lists  Datacomputer  nodes  (sites,  users,

subdirectories,  and  <FILES>)  and  information about them.  The

information displayed by the VERBOSE option comes  directly  from

the Datacomputer.

     The REMOVE  command  removes  nodes  from  the  Datacomputer

directory.   They  must  either have no inferior nodes (including

<FILES> nodes), or be part of a node set that  includes  inferior

nodes  ('**').   Data  stored  under  removed  nodes will also be

deleted.
                     File-Oriented Commands


     File deletion operates  as  with  TENEX  and  TOPS-20.   The

DELETE  command  marks  files  as deleted, but does not eliminate

them.  They can be listed via the VERBOSE option of the DIRECTORY

command, and their deleted status can be changed by the  UNDELETE

command.  The  removal  of  deleted  files  is  deferred until an

EXPUNGE is performed on the <FILES>  node  containing  them.  The

default version number is the lowest undeleted, unless a file set

is  indicated, in which case all versions in the set are deleted.

     The DIRECTORY command  lists  files  and  information  about

them.  The VERBOSE option lists deleted and undeleted files (with

deleted  ones indicated by 'D' after the name), the date and time

created (for TOPS-10 and ITS  sites),  the  date  and  time  last

written  (for TENEX and TOPS-20 sites), the date and time stored,

and the size.  For files stored from TENEX and TOPS-20 sites  the

size  information  is in the form <number of bytes>(<byte size>).

For files stored from TOPS-10 and ITS sites the information is in

the form <number of  36  bit  words>(-<data  mode)).   The  TERSE

option lists undeleted files and their sizes (in the same form as

the  VERBOSE  option).   The  DELETED option is the equivalent of

TERSE for deleted files.   The  default  version  number  is  the

highest  undeleted, unless a file set is indicated, in which case

information for all versions in the set is listed.
     The  EXAMINE  command  lists  on  the  user's  terminal  the

contents  of  the  files  specified as the command argument.  The

command also takes as an argument the  number  of  lines  between

'More?'  prompts,  which  are  used  to  terminate  listing.  The

default number of lines is 20 or, if the EXAMINE command has been

invoked previously, the number given then.   The  listing  of  an

individual  file  may  be terminated by answering in the negative

the 'More?' prompt, and the listing of the current and  remaining

files  may  be  aborted  by  answering  the prompt with 'A'.  The

default version number is the highest undeleted,  unless  a  file

set  is  indicated,  in  which  case  all versions in the set are

listed.
     The GET and PUT commands retrieve and store local disk files

on the Datacomputer. Files of any type (text or binary image, for

example) can be stored.   If  a  synonym  is  not  supplied,  the

Datacomputer  file  name  is used as the local file name.  If the

first argument to either command is completed with an escape or a

space, the synonym  option  is  invoked  and  the  commands  then

operate in the form

          GET Datacomputer file [AS] local file, and

          PUT local file [AS] Datacomputer file.

For  the  GET  command  the default version number is the highest

undeleted, unless a file set is  indicated,  in  which  case  all

versions  of  the  set  are  retrieved.  The PUT command sets the

version number of the file being stored to be  one  greater  than

the  highest  version  of  existing  files with the same name and

extension.  Note that a file set indicated in any file name field

is treated as if all existing files had the same field -- storing

*.* results in the stored files  receiving  version  numbers  one

greater  than  the  highest  version number found in any existing

file.
     The RENUMBER command changes a file's version number.  It is

the only mechanism available to the user  for  affecting  version

numbers.   The user specifies the file to be changed, after which

DFTP  asks  for  the  new  version  number.   File  sets  may  be

specified,  but only if a version number is explicitly given with

the file set.  The default  old  version  number  is  the  lowest

undeleted.  The default new version number is 1.

     The UNDELETE command rescinds a file's deleted status.   The

default  version number is the highest deleted, unless a file set

is  indicated,  in  which  case  all  versions  in  the  set  are

undeleted.
                     Miscellaneous Commands



     The   SHOW-DATALANGUAGE   and    NO-DATALANGUAGE    commands

respectively  allow and inhibit the output to the user's terminal

of the messages sent to and received from the Datacomputer.

     Data transfer rates are calculated and  given  to  the  user

when   the   TIME-TRANSFERS   command   has  been  invoked.   The

calculations are avoided with the UNTIME-TRANSFERS command.

     QUIT   exits   gracefully   from   DFTP,   closing   network

connections.
                            Responses



     There are three types of messages that DFTP gives the  user.

Comments    surrounded   by   square   brackets   are   primarily

informational  messages,  and  are  never  errors.    Parentheses

enclose non-fatal errors and informational Datacomputer messages,

such  as  '(LEBAR2:  ERROR:  NO  SUCH  FILE)',  resulting from an

attempt to DELETE a nonexistent file, and '(SXPF9:  STAGING  DATA

FOR FILE = DFTP.CCA.DFTP.<FILES>)', indicating that data is being

moved  from  tertiary  mass  memory  to  secondary buffer memory.

These messages come directly from the Datacomputer, indicated  by

the  name  and  colon  at  the  head of the message.  Fatal error

messages are surrounded by question marks, and  of  course  never

occur.
                     Site Dependent Features



     For  the  TENEX  and  TOPS-20  versions,  the  EXEC  command

provides  the  user  with an inferior exec, which is flushed when

the user returns to DFTP.  Where a local file  name  is  possible

(in  the GET and PUT commands) an initial space or escape invokes

name recognition, indicated by a '>' prompt.  A  <control-O>  can

be  used to halt the output from the LIST and DIRECTORY commands.

     For the TOPS-10 version, the LOCAL-DIRECTORY  command  lists

the  user's  local  file  directory.  The LOCAL-USER command sets

the project-programmer name.  Both commands affect the GET,  PUT,

PUT, and LOCAL-DIRECTORY commands.  The SAIL  version  implements

LOCAL-DIRECTORY and LOCAL-USER.

     For the ITS  version  the  LOCAL-CONNECT  command  specifies

which  SNAME  (local  directory)  is  used  for  the  GET and PUT

commands.  If a carriage return is typed with  no  argument,  the

user's  default  SNAME  is used.  The TERSE command (unset by the

VERBOSE command) suppresses informational  Datacomputer  messages

(such   as   the   staging   message   below),   and  performs  a

NO-DATALANGUAGE and an UNTIME-TRANSFERS.
                         Access Control



     DFTP access control uses a subset of the  full  Datacomputer

mechanism.   A  complete  discussion  of  Datacomputer  privilege

facilities can be found in the current Datacomputer User  Manual.

     Access privileges are defined in privilege  blocks  attached

to  nodes  in  the  directory.   A  node  may  have any number of

privilege blocks attached to it.  Each block consists of a set of

privileges and a class of users to whom that set  applies.   DFTP

provides two classes of access, control and read.  Control allows

users  to  ATTACH to a node, CREATE and ALLOCATE nodes below that

node, CHANGE privileges at and below that node, and read,  write,

and  delete  data stored below that node.  Read only allows users

to ATTACH to a node and read data stored  under  it.   All  other

users are denied everything but the ability to LIST nodes.  Users

are  identified either by passwords, or by their network identity

(defined by the host  and  socket  from  which  they  access  the

Datacomputer),  or  both.   Some  systems  enforce  assignment of

socket numbers according to the user's identity on  that  system,

thus providing convenient automatic identification to DFTP.

     When a user attemps to access a node,  or  manipulate  nodes

and  data  under  it, the Datacomputer compares the user with the

user classes identified in privilege blocks  on  that  node,  and

assigns the corresponding class of privileges.  If no set matches

the  user,  no  privileges are allowed.  the privilege blocks are

scanned in the order of creation, and if a user matches more than

one block, the first takes effect.  Access controls  are  set  by

the  CHANGE  and  CREATE  commands,  described  in  the following

section.
                       Privileged Commands



     Privileged  commands  are  made  available  via  the  ENABLE

command.   Its action is marked by a change in the command prompt

from '*' to '!'.   The  DISABLE  command  undoes  the  effect  of

ENABLE.

     The ALLOCATE command is used to set the  maximum  number  of

megabits  a  user  may  consume.   It  can  also  be  used to set

subdirectory  limits.   Allocations  are  made  and  reported  in

megabits  -- 1,013,760 bits to be precise, the size of a block on

the Datacomputer's tertiary memory.  A megabit is  roughly  equal

to 55 512-word pages, or 220 128-word blocks.

     The CHANGE command redefines the access control  information

for  a  given  node.   It  deletes  all  existing  access control

information  (privilege   blocks),   then   builds   new   blocks

interactively  with  the  user.  The PROTECTION subcommand of the

LIST command can be used  to  examine  the  privilege  blocks  of

nodes.

     The CREATE command is used to create a node for a new  user.

After  the node has been created, the access control is specified

as with the CHANGE command.

     The LINK command allows the user to send Datalanguage to the

Datacomputer.  Each line of  input,  prompted  by  '>',  is  sent

directly  to  the  Datacomputer,  without any processing by DFTP.

Return to DFTP command input is  achieved  by  inputting  a  null

line.
               Examples Using Privileged Commands


;Attach to a node.
; (gain control at site CCA by supplying the proper password)
*ATTACH <<<CCA:
*ENABLE

;Create a user and privileges.
; (the first privilege allows creation and deletion for
;   local user HACKER upon supplying the password "ETAOIN")
; (the second privilege allows creation and deletion for
;   anyone from Harvard (host 11) upon supplying the password "SHRDLU")
; (the third privilege allows anyone read)
!CREATE HACKER
 [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? Yes
   Restrict via user? Yes
    User: HACKER
  Restrict via password? Yes
   Password: ETAOIN
  [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? No
    Site: 11
   Restrict via user? No
  Restrict via password? Yes
   Password: SHRDLU
  [OK]
 Add a new privilege? Yes
  Allow control? No
  Restrict via network? No
  Restrict via password? No
  [OK]
 Add a new privilege? No
;List the privileges.
; (in Datacomputer format (passwords are never listed))
!LIST HACKER
!!PROTECTION
    CCA
        HACKER
            ] (1),U=**,H=31,S=12582928,G=CLWRA
            ] (2),U=**,H=9,S=ANY,G=CLWRA
            ] (3),U=**,H=ANY,S=ANY,G=LR
;Replace the privileges.
; (the first privilege allows creation and deletion for
;   local user HACKER)
; (the second privilege allows anyone read
;   upon supplying the password "WALDO")
; (the "[OK]" indicates that the previous privileges have been deleted)
!CHANGE HACKER
 [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? Yes
   Restrict via user? Yes
    User: HACKER
  Restrict via password? No
  [OK]
 Add a new privilege? Yes
  Allow control? No
  Restrict via network? No
  Restrict via password? Yes
   Password: WALDO
  [OK]
 Add a new privilege? No
;List the privileges.
!LIST HACKER
!!PROTECTION
    CCA
        HACKER
            ] (1),U=**,H=31,S=12582928,G=CLWRA
            ] (2),U=**,H=ANY,S=ANY,G=LR

;List all information.
; ("MX-U" indicates the maximum allocation in megabits)
!LIST HACKER
!!VERBOSE
    CCA
        HACKER
            ] MX-U=10.00 CHRG=0.00
            ] IN-N=0 IN-F=0
            ] CREA=761101052805
;Change the allocation.
; (decrease the allocation from 10 megabits to 2 megabits)
!ALLOCATE HACKER
 [Megabits:2]
;List all information.
!LIST HACKER
!!VERBOSE
    CCA
        HACKER
            ] MX-U=2.00 CHRG=0.00
            ] IN-N=0 IN-F=0
            ] CREA=761101052805
                         Command Summary


ATTACH <node path>

BIG <node path>

CONNECT <node path> (1)

DELETE <file path> (4) (5)

DIRECTORY <file path> (4) (6) (10)
        DELETED
        TERSE
        VERBOSE

EXAMINE <file path> (4) (6)
        Lines per page: <decimal integer> (8)
        More? <Y or N or A>

EXPUNGE <node path> (2)

GET (RETRIEVE) <file path> [local file name synonym] (4) (6) (11)

LIST <node path> (3) (10)
        TERSE
        VERBOSE

NO-DATALANGUAGE

PUT (STORE) <file path> [remote file path synonym] (4) (11)

QUIT

REMOVE <node path> (3)

RENUMBER <file path> (5)
        Version number: <decimal integer> (9)

SHOW-DATALANGUAGE

TIME-TRANSFERS

UNDELETE <file path> (4) (7)

UNTIME-TRANSFERS
                 Site Dependent Command Summary


EXEC (12)


LOCAL-DIRECTORY (13)

LOCAL-STRUCTURE <string> (13)

LOCAL-USER (13)
        Project: <octal integer> (14)
        Programmmer: <octal integer> (14)


LOCAL-CONNECT <string> (15)

TERSE (15)

VERBOSE (15)
                   Privileged Command Summary


ALLOCATE <node path>
    Megabits: <decimal integer>

CHANGE <node path>
    Add a new privilege? <Y or N>
        Allow write? <Y or N>
        Restrict via network? <Y or N>
            Restrict via local host? <Y or N>
                Host number (octal): <octal integer>
                  (if host not local)
            Restrict via user? <Y or N>
                Socket number (octal): <octal integer>
                  (if user restricted and host not local)
                User: <user name> (16)
                  (if user restricted and host local)
        Restrict via password? <Y or N>
            Password: <string>

CREATE <node path>
    (see CHANGE)

DISABLE

ENABLE

LINK (17)

LIST <node path>
    PROTECTION
                          Summary Notes


     Required input is indicated by angle brackets.

     Optional input is indicated by square brackets.

     The connect context is   the   default   context   for   all
          commands  except  ATTACH,  the default for which is the
          top context, and BIG and CONNECT, which have  as  their
          defaults the the attach context.

     (1) The default argument is <<.

     (2) The default argument is <.

     (3) The default argument (and trailer) is **.

     (4) The default argument (and trailer) is *.*;*.

     (5) The default version is the lowest undeleted.

     (6) The default version is the highest undeleted.

     (7) The default version is the highest deleted.

     (8) The default page size is 20 or the last size input.

     (9) The default version number is 1.

     (10) On TENEX and TOPS-20 sites, a  <control-O>  will  abort
          output.

     (11) On TENEX and  TOPS-20  sites,  an  initial  <space>  or
          <escape>  as  file  name  input invokes local file name
          recognition.

     (12) Available on TENEX and TOPS-20 sites only.

     (13) Available on TOPS-10 sites only.

     (14) The argument is a <string> on SAIL sites.

     (15) Available on ITS sites only.

     (16) A directory name if  TENEX  or  TOPS-20,  a  programmer
          number if TOPS-10 (not used on SAIL or ITS).

     (17) A null input line returns the user to command mode.
                              Paths



{node path} :: =  {context}
                | {node list}
                | **
                | {context} **
                | {context} {node list}
                | {context} {node list} > **
                | {node list} > **

{context} ::=     <             (connect context)
                | <<            (attach context)
                | <<<           (top context)

{node list} ::=   {node}
                | {node} > {node list}

{node} ::=        {name}
                | {name} : {password}
                | *


{file path} ::=   {file name}
                | {context} {file name}
                | {node list} > {file name}
                | {context} {node list} > {file name}

{file name} ::=   {file}
                | {file} .
                | {file} . {extension}
                | {file} ; {version}
                | {file} . ; {version}
                | {file} . {extension} ; {version}

{file} ::= {name} | *

{extension} ::= {name} | *

{version} ::= {number} | *



Notes:
     Any printing ASCII characters except <, >, ., :,  *,  ?,  ',
          and " may be used in a {name}.
     Any printing ASCII characters (plus space) except >,  .,  ',
          and " may be used in a {password}.